import os
import pandas as pd
from openpyxl import Workbook

def combine_sheets_to_new_workbook(input_folder, output_file):
    # 创建一个新的工作簿用于存储所有合并后的工作表
    master_wb = Workbook()
    master_wb.remove(master_wb.active)  # 删除默认创建的第一个空白工作表

    # 遍历指定目录下的所有 .xls 文件
    for filename in os.listdir(input_folder):
        if filename.endswith(".xls"):
            file_path = os.path.join(input_folder, filename)
            
            try:
                # 读取工作簿中的所有工作表
                xls = pd.ExcelFile(file_path)
                
                for sheet_name in xls.sheet_names:
                    df = pd.read_excel(xls, sheet_name=sheet_name)
                    
                    # 创建新的工作表并添加数据
                    new_sheet_name = f"{os.path.splitext(filename)[0]}_{sheet_name}"
                    ws = master_wb.create_sheet(title=new_sheet_name)
                    
                    for r_idx, row in enumerate(df.itertuples(index=False), start=1):
                        for c_idx, value in enumerate(row, start=1):
                            ws.cell(row=r_idx, column=c_idx, value=value)
                
                print(f"已处理文件: {filename}")
                    
            except Exception as e:
                print(f"处理文件 {filename} 时出错: {e}")

    # 保存合并后的工作簿
    master_wb.save(output_file)
    print(f"所有工作表已成功合并到 {output_file}")

if __name__ == "__main__":
    input_folder = "/home/zgy/桌面/国家统计局"  # 替换为你的实际文件夹路径
    output_file = os.path.join(input_folder, "CombinedWorkbook.xlsx")  # 输出为 .xlsx 文件
    
    combine_sheets_to_new_workbook(input_folder, output_file)
